#include "thread_pool.hpp"
#include "Task.hpp"
#include <ctime>
#include <cstdlib>
using namespace ns_threadpool;
using namespace ns_task;
int main()
{
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    cout << "当前正在运行我的进程和其他代码......" << endl;
    sleep(5);
    srand((long long)time(nullptr));
    while(true)
    {
        sleep(1);
        Task t(rand() % 20 + 1, rand() % 10 + 1, "+-*/%"[rand() % 5]);
        ThreadPool<Task>::GetInstance()->PushTask(t);
        //单列本身会在任何场景下，任何环境下被调用
        //GetInstans()：被多线程重入，进而导致线程安全的问题
        cout << ThreadPool<Task>::GetInstance() << endl;
    }
        return 0;
}
